#include "mathinter.h"

MathInter::MathInter(QWidget *parent) : QMainWindow(parent)
{

}


//预先定义插值节点的个数为1000个，根据控制台输入的个数num从而确定插值节点的个数
const int N=1000;
// 拉格朗日插值算法
float MathInter::lglr(float x[], float y[],int n,int t)
{
     float yResult=0.0;
     //LValue[N]存放的是每次求解的插值基函数的通项
     float LValue[N];
     //循环变量k,m
     int k,m;
     //插值基函数中的上下累乘temp1,temp2
     float temp1,temp2;
     for(k=0;k<n;k++)
     {
         temp1=1.0;
         temp2=1.0;
         for(m=0;m<n;m++)
         {
             if(m==k)
             {
                 continue;
             }
             temp1 *= (t-x[m]);
             temp2 *= (x[k]-x[m]);
         }
         LValue[k]=temp1/temp2;
     }
     for(int i=0;i<n;i++)
     {
         yResult += y[i]*LValue[i];
     }
     return yResult;
}
